package logica.persistencia;

import logica.Atributo;
import org.jdom.Element;

import xml.ConstantesXml;
import xml.XMLManager;


public abstract class AtributoPersistente {
	private Atributo atributo;
	private Element padre;
	private int identificador = 0;
	
	public AtributoPersistente(Atributo atributo) {
		this.setAtributo(atributo);
		identificador= XMLManager.getIdentificador(atributo);
	}
	
	public Element getPadre() {
		return padre;
	}

	public void setPadre(Element padre) {
		this.padre = padre;
	}
			
	public Atributo getAtributo() {
		return atributo;
	}
	
	public void setAtributo(Atributo atributo) {
		this.atributo = atributo;
	}
	
	public void serializarElementoGenerico(Element elementoAtributo) {
		elementoAtributo.setAttribute(ConstantesXml.ATRIBUTO_ID_OBJETO, String.valueOf(identificador));
		elementoAtributo.setAttribute(ConstantesXml.ATRIBUTO_NOMBRE, atributo.getNombre());
		elementoAtributo.setAttribute(ConstantesXml.ATRIBUTO_CARDINALIDAD_MINIMA,  String.valueOf(atributo.getCardinalidadMin()));
		elementoAtributo.setAttribute(ConstantesXml.ATRIBUTO_CARDINALIDAD_MAXIMA,  String.valueOf(atributo.getCardinalidadMax()));
		
		XMLManager.getInstance().agregarElementoAElemento(padre, elementoAtributo);
	}
	
	public int getIdentificador() {
		return identificador;
	}
	
	public abstract void serializar();

	public void hidratarGenerico(Element elementoAtributo) {
		//Hasheo el elemento para poder obtenerlo después a través del id
		String claveHash = elementoAtributo.getAttributeValue(ConstantesXml.ATRIBUTO_ID_OBJETO);
		XMLManager.getInstance().hashObjetoDiagramaConClave(claveHash, this.atributo);
		String cardMin = elementoAtributo.getAttributeValue(ConstantesXml.ATRIBUTO_CARDINALIDAD_MINIMA);
		String cardMax = elementoAtributo.getAttributeValue(ConstantesXml.ATRIBUTO_CARDINALIDAD_MAXIMA);
		this.atributo.setCardinalidadMin(Integer.valueOf(cardMin));
		this.atributo.setCardinalidadMax(Integer.valueOf(cardMax));
	}
	
	
}


